Communication (or Network) processors are designed for efficient implementation of switching and routing functions for digital networks, such as the Internet. Particularly, network processors control the flow of packets between a physical transmission medium. To control traffic in a network, a Quality of Service (QoS) control mechanism is implemented. QoS provides different priority to different users or data flows, or guarantee a certain level of performance to a data flow in accordance with requests from an application program. QoS guarantees are important if network capacity is limited, especially for real-time streaming multimedia applications.
Currently, quality of service for Internet traffic is implemented using a queue manager interrupt service request arbiter, or by software. The queue manager service request arbiter partitions interrupts from queues into smaller groups and connects each group to a different set of arbiters that form a first layer of arbitration.
Another set of arbiters combine the outputs of the first layer arbiters to form the next layer of arbitration. This process of cascading the outputs of the previous layer of arbitration to form next layer is utilized to provide QoS for Internet traffic from different queues. This method is non-configurable because priorities are often pre-set and pre-mapped to dedicated queues in each unique communication processor design. Implementing a software solution on the other hand may add substantial overhead to the communication processor, and significantly decrease processor efficiency.